eeifandomcom_gl-20200213-history
Categoría:SOII
Comecemos pola programación en BASH. Aquí tratarase este shell pero hai moitos outros, aquí hai varios : http://es.wikipedia.org/wiki/Shell_de_Unix Comecemos con algúns comandos básicos: *sh: abre unha nova sesión. /bin/sh abre un novo terminal STX : SH *who : quen se conecta ao servidor STX: who i *date : obter a data. Ex: date + "Hoy es %d" STX: date %d %m %y %H %M %W %S # d = día, m = mes, y = year, H = hour, M= minute, # w =day of the week, S second *echo: saca un texto pola saída estándar de pantalla. STX : echo -n cadea #Coa opción -n non debuxamos saltos de liña. # IMPORTANTE echo hola que tal != echo "hola que tal " *uname: da información sobre a máquina. STX : uname -amnrs . # -a = información SO #-m = arquitectura SO #-n = nome rede (servidor) #-r = kernel *man : proporciona información sobre comandos. STX: man -k section comando Exemplo: man -k ftp #Proporciona tódalas entradas relacionadas con ftp. *passwd: cambia o contrasinal STX: passwd usuario *ls: fai un listado con diferentes opcións STX: -ls -la filtro Coa opción: -l: obtén resultados en formato de listado longo. -a : para ver tódolos arquivos. *pwd: mostra a ruta do directorio actual *cd : cambia directorio O caracter . indica o directorio actual e .. indica o directorio .. Se facemos cd ~ ou cd $HOME coloxarémonos no noso directorio home. *mkdir: crea un directorio. *rmdir: borra un directorio *cat: mostra un ficheiro *more : mostra un ficheiro pero pouco a pouco tendo que pulsar espacio para ver o seu conteñido completo. *head: mostra n liñas do principio do ficheiro *tail: mostra n liñas do final do ficheiro. *cp: copia *chmod: cambia os permisos *umask: cambia a máscara *ln: crea un enlace *file: obtén información sobre un ficheiro *du: mostra o espacio en disco do que lle pasamos *sudo : executa calquera orde como root Se queremos executar unha orde en segundo plano poñémoslle un & ao final da mesma. Do mesmo xeito, se escribimos varias ordes separas con ; executaranse secuencialmente. Se poñemos unha orde entre ` ` o que conseguiremos traballar co resultado que devolve a orde(é o mesmo que $(orde1)) *chown: cambia os permisos de arquivos. Así : STX: chown [usuario[ : grupo archivo/caroetas Ex: chown -R alumno : alumnos carpeta # Cambia usuario e grupo. Á carpeta asígnaselle o user alumnos e o group alumnos. Agora veñen algúns comandos útiles para a realización de scripts, tales como os bucles for, while, if, estruturas lóxicas,.... BUCLE FOR for i in lista_valores do orde1 orde2 orde3 ... orden done BUCLE IF # A condición deberá devolver un valor lóxico , algo que conseguiremos coa orde #test ou no seu defeito os símbolos [] ou con algún modificador doutros comandos , como por exemplo grep -#q) if condición then ordes else # ou elif no caso de que haxa varios else ordes fi BUCLE WHILE while condicion do ordes done BUCLE CASE case "$variable" in lista_valores Opcion|opcion) ordes;; *) exit 0 ;;#indica calquera valor non presenta en Opción|opción esac A continuación mostrarei un pouco que comandos hai para filtrar cousas.Así, podemos distinguir: grep: serve para buscar liñas que cumpran o patrón que se lle especifique. Así, a sintaxe sería grep cadea_buscar . Algunhas opcións interesantes son -e, que serve para usar o grep extendido (que basicamente permite máis expresión regulares que grep) ou -q, que evalúa de forma lóxica se se cumpre a expresión regular( se atopa algún resultado) . sed : é a abreviatura de stream editor. É un dos filtros máis potentes, que coma todos se basea en atopar o que cumpra a expresión regular. Así, sed por defecto aplícase a tódalas liñas do ficheiro aínda que podemos especificar a que liñas exactamente se aplica poñendo sed 1,5 . A sintaxe de sed sería sed liñas_aplicas(se non pos nada é todo o documento) p,d ou s/ expresión regular/segunda expresión regular opcional(só no caso de s) /modificadores(g para avaliavión completa, i para evitar que sexa case sensitive,....)Se poñemos sed -n evitaremos que saian tódalas lñas no resultado e só saíran as que nos interesan. cut: cut é unha ferramenta de filtrado que ao contrario que as outras non se basea en expresións regulares. Así,as dúas opcións máis comúns son -c rango_caracteres, coa que podes especificar cal é o rango de caracteres que queres coller ( exemplo, quero os dous primeiros caracteres de cada liña : cut -c 1-2) ou -f número para seleccionar campos(exemplo: cut -d = ":" -f 7 selecciona o campo 7 tendo en conta que o separados son os : ) awk: é posíbelmente un dos filtros máis completos xa que en si mesmo é unha linguaxe de programación. As instruccións en awk teñen tres partes : BEGIN, cousas que facer antes de procesar as liñas, logo a expresión regular , patrón, que queiramos que se cumpra e por último END , cousas que facer despois de procesar as liñas. Así, un exemplo sería : cat /etc/passwd | awk ' BEGIN { FS= ":" } $3 >= 1000 {print $0} Así, o anterior devolvería as liñas cuxo usuario teña un ID superior a mil. FS é o separador de campos, unha das variables predefinidas en AWK como NR(que varía dependendo de se nos queremos saltar liñas ao principio ao procesar) , $3 indica o número de campo tendo en conta o separador e $0 refírese a toda a liña. Como se pode observar con awk é posíbel realizar a grande maioría das operacións de filtrado sen usar os outros filtros. paste: basicamente sirve para se tes dous ficheiros que sexan columnas construír un ficheiro só con ámbalas dúas columnas. Pero cecáis a aplicación máis práctica que eu lle vexo é a posibilidade de de comvertir un ficheiro que ten moitas liñas nun ficheiro dunha soa liña composta de todas as que tiña o ficheiro seguidas, típico exemplo de ter unha columna de nomes e queres poñelos todos nunha liña. join: basicamente fai o mesmo que un join sql, pásanselle dous ficheiros co seu respectivo separador de campo e devolve un ficheiro facendo un "join natural" dos dous tr: a utilidade de tr é a de substituír uns caracteres por outros. Sï, sed coa opción s/ xa o fai pero este é un comando só dedicado a eso. Así, é sinxelo substituír tódolos números por x poñendo tr 0-9 x. Hai variables definidas para tr como /n(salto de liñas), /t(tabulación),.... Os anteriores son os filtros máis importantes